One of the more prevalent uses of computer systems, particularly desktop computers, is the generation of documents. After a user has created a document through one or more application programs, the user may issue a command to print the document. In some cases, the application program contains information regarding the specific characteristics of the printer on which the document is to be printed. In this case, the application program may interact directly with a printer driver, to send the document data to the printer. More commonly, however, the application program does not directly interact with the printer. Rather, the data to be printed is typically sent to a print manager. The print manager is a set of routines and data types that allow application programs to use standard commands to print text or graphics on a printer. The print manager is designed so that the application programs do not need to call different routines for different kinds of printers. Rather, the application programs call the same printing routines, regardless of the particular printer to which the print job is to be supplied. This type of arrangement is particularly desirable in situations where multiple printers are available, and the user has the option to select any one of them for the printing of a given document.
A typical printing arrangement which employs a print manager is illustrated in FIG. 1. When an application program 10 receives a print command from a user, the program forwards an image of the currently open document to a print manager 12. Upon receipt of the document data, the print manager stores a representation of the document's printed image to a file 14 that is stored in memory. Depending upon the amount of available memory and the size of the file, it can be stored in the computer's random access memory or in a more permanent storage medium, such as a hard disk. This file is often referred to as a spool file. Subsequently, the print manager 12 forwards the spool file to a printer driver 16 associated with the particular printer on which the document is to be printed. The printer driver converts the spool file data into the appropriate printer format, e.g., bit image, and forwards it to the printer, along with appropriate control codes, to cause the document to be printed.
In the example illustrated in FIG. 1, three different printers are available in the computer system. For example, one printer may be a dot matrix type of printer, another printer may be a laser printer, and the third printer may be an inkjet printer. Each printer has a separate printer driver 16 associated with it. In the case of the dot matrix printer and the inkjet printer, the driver communicates directly with the printer, to cause the document to be printed. In the illustrated example, the laser printer is capable of supporting a page-description language, such as PostScript, for example. In this case, the printer driver converts the spool file into the appropriate page description language, which is then passed on to the printer to cause the document to be printed.
One of the advantages associated with the arrangement shown in FIG. 1 is that the print manager can handle multiple print job requests. For example, many computer systems which employ graphical user interfaces offer the capability to issue print commands directly from a file manager, or the like, as well as from within a particular application program. FIG. 2 illustrates an example of a graphical user interface of the type having a desktop 20 on which a user can place icons that represent different available services, such as different printers, as well as data files. In a system such as this, a user can cause a particular document to be printed on a specific printer by dragging the icon for that document onto the icon for the printer. For example, with reference to FIG. 2, the user may drag the icon for Document 1 onto the icon for the dot matrix printer. In response thereto, the printer manager 12 creates a spool file for Document 1. While the spool file is being created, or while the document is actually being printed, the user might drag the icon for Document 2 onto the icon for the laser printer. In response thereto, the print manager 12 creates a second spool file for Document 2. In a similar manner, if the user drags the icon for Document 3 onto one of the printer icons, the print manager creates a spool file for that document.
All of the spool files are stored in a queue by the print manager 12. When the printing of each document is completed, the spool file for that document is deleted by the print manager. After the last document has been printed, the print manager itself shuts down, until a new request to print a document is generated.
Typically, in an arrangement such as that depicted in FIG. 1, all of the print jobs are treated in a sequential manner. Thus, Document 2 is not printed on the laser printer until the printing of Document 1 on the dot matrix printer has been completed. If the dot matrix printer should run out of paper while Document 1 is being printed, the entire printing operation will come to a halt until the user takes some appropriate action. Typically, the user will add more paper to the printer. Alternatively, the user might issue a command to cancel the printing of that document. If the user is not currently available, all of the print jobs will be suspended until such time as an appropriate action can be taken. This result occurs even if the other printers are currently capable of handling the print jobs which are designated for them. Thus, even if the subsequent print jobs are relatively simple, e.g., one page each, they are forced to unnecessarily wait until the appropriate corrective action has been made with respect to the current print job.
Accordingly, it is desirable to provide an arrangement in which multiple print jobs can be managed in a manner that provides greater flexibility, and does not require all print jobs to be suspended if one of them cannot be currently completed.